home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Utilities / BenchMarks / ByteBenchmark / src / pipe.c < prev    next >
C/C++ Source or Header  |  1994-01-27  |  2KB  |  66 lines

  1. /*******************************************************************************
  2.  *  The BYTE UNIX Benchmarks - Release 3
  3.  *          Module: pipe.c   SID: 3.3 5/15/91 19:30:20
  4.  *          
  5.  *******************************************************************************
  6.  * Bug reports, patches, comments, suggestions should be sent to:
  7.  *
  8.  *    Ben Smith, Rick Grehan or Tom Yager
  9.  *    ben@bytepb.byte.com   rick_g@bytepb.byte.com   tyager@bytepb.byte.com
  10.  *
  11.  *******************************************************************************
  12.  *  Modification Log:
  13.  *  $Header: pipe.c,v 3.5 87/06/22 14:32:36 kjmcdonell Beta $
  14.  *  August 29, 1990 - modified timing routines (ty)
  15.  *
  16.  ******************************************************************************/
  17. char SCCSid[] = "@(#) @(#)pipe.c:3.3 -- 5/15/91 19:30:20";
  18. /*
  19.  *  pipe  -- test single process pipe throughput (no context switching)
  20.  *
  21.  */
  22.  
  23. #include <stdio.h>
  24. #include <errno.h>
  25. #include "timeit.c"
  26.  
  27. unsigned long iter;
  28.  
  29. report()
  30. {
  31.     fprintf(stderr,"%ld loops\n", iter);
  32.     exit(0);
  33. }
  34.  
  35. main(argc, argv)
  36. int    argc;
  37. char    *argv[];
  38. {
  39.     char    buf[512];
  40.     int        pvec[2], duration;
  41.  
  42.     if (argc != 2) {
  43.         printf("Usage: %s duration\n", argv[0]);
  44.         exit(1);
  45.         }
  46.  
  47.     duration = atoi(argv[1]);
  48.  
  49.     pipe(pvec);
  50.  
  51.     wake_me(duration, report);
  52.     iter = 0;
  53.  
  54.     while (1) {
  55.         if (write(pvec[1], buf, sizeof(buf)) != sizeof(buf)) {
  56.             if ((errno != EINTR) && (errno != 0))
  57.                 printf("write failed, error %d\n", errno);
  58.             }
  59.         if (read(pvec[0], buf, sizeof(buf)) != sizeof(buf)) {
  60.             if ((errno != EINTR) && (errno != 0))
  61.                 printf("read failed, error %d\n", errno);
  62.             }
  63.         iter++;
  64.     }
  65. }
  66.